/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ufc.quixada.adrs.model;

import br.ufc.quixada.adrs.util.UtilAdrs;
import java.util.Date;

/**
 *
 * @author ismaily
 */
public class RelatorioResult {

    private Produtor prudutor;
    //dados detalhados do produtor
    private Date[] data;
    //private Date data;
    private String[] filtros;
    private int[] dados;
    private int posicao;
    //dados para compor o relatorio geral
    private String[] filtrosMarcados;
    private int[] subTotal;
    private int posicaoFiltros;

    public RelatorioResult() {
        //inicializa dados detalhado do produtor
        filtros = new String[500];
        dados = new int[500];
        data = new Date[500];
        posicao = 0;

        //inicializa dados para compor relatorio geral
        posicaoFiltros = 0;
        filtrosMarcados = new String[15];
        subTotal = new int[15];

    }

    public String[] getFiltrosMarcados() {
        return filtrosMarcados;
    }

    public void setFiltrosMarcados(String[] filtrosMarcados) {
        this.filtrosMarcados = filtrosMarcados;
    }

    public int getPosicaoFiltros() {
        return posicaoFiltros;
    }

    public void setPosicaoFiltros(int posicaoFiltros) {
        this.posicaoFiltros = posicaoFiltros;
    }

    public int[] getSubTotal() {
        return subTotal;
    }

    public void setSubTotal(int[] subTotal) {
        this.subTotal = subTotal;
    }

    public Date[] getData() {
        return data;
    }

    public String getFormatedData(int posicao) {
        return UtilAdrs.treatToMonthYearString(data[posicao]);
    }

    public void setData(Date data, int posicao) {

        this.data[posicao] = data;
    }

    public void setData(Date[] data) {

        this.data = data;
    }

    public int[] getDados() {
        return dados;
    }

    public void setDados(int[] dados) {
        this.dados = dados;
    }

    public String[] getFiltros() {
        return filtros;
    }

    public void setFiltros(String[] filtros) {
        this.filtros = filtros;
    }

    public Produtor getPrudutor() {
        return prudutor;
    }

    public void setPrudutor(Produtor prudutor) {
        this.prudutor = prudutor;
    }

    public void setFiltroDado(String filtro, int dado, Date data) {
        this.filtros[posicao] = filtro;
        this.dados[posicao] = dado;
        this.data[posicao++] = data;
    }

    public void setFiltroDadoSubTotal(String filtro, int dado) {
        this.filtrosMarcados[posicaoFiltros] = filtro;
        this.subTotal[posicaoFiltros++] = dado;
    }

    public int getPosicao() {
        return posicao;
    }

    public void setPosicao(int posicao) {
        this.posicao = posicao;
    }

    /*
    private void ordenarEmMesmaData(String[] valores, int[] dados, int inicio, int tamanho) {


    for (int i = inicio; i < tamanho; i++) {
    for (int j = tamanho - 1; j > i; j--) {

    if (valores[j].compareTo(valores[i]) > 0) {
    int aux1 = dados[i];
    dados[i] = dados[j];
    dados[j] = aux1;

    String aux2 = valores[i];
    valores[i] = valores[j];
    valores[j] = aux2;
    }
    }
    }

    public void ordenarEmFiltroEmData(String[] valores, int[] dados, int tamanho) {


    int contData = 0;
    boolean temData = false;
    for (int i = 0; i < tamanho; i++) {
    contData = 0;
    temData = false;
    for (int j = i; j < tamanho; j++) {
    if (!data[j].equals(data[j + 1])) {
    break;
    }
    temData = true;
    contData++;
    }
    if (temData) {
    this.ordenarEmMesmaData(valores, dados, i, contData);
    i = contData;
    }
    }
    }
     */

    /*ordena por data*/
    public void ordenaFiltroByData(Date dat) {

        for (int i = 0; i < posicao; i++) {
            
            for (int j = posicao - 1; j > i; j--) {
                if (filtros[j].compareTo(filtros[i]) < 0 && data[i].equals(data[j]) && dat.equals(data[i])) {
                    int aux1 = dados[i];
                    dados[i] = dados[j];
                    dados[j] = aux1;

                    String aux2 = filtros[i];
                    filtros[i] = filtros[j];
                    filtros[j] = aux2;
                }
            }
        }
    }

    /*Ordena por filtro*/
    public void ordenarValoresFiltros() {
        for (int i = 0; i < posicao; i++) {
            for (int j = posicao - 1; j > i; j--) {

                if (data[j].before(data[i])) {
                    Date aux = data[i];
                    data[i] = data[j];
                    data[j] = aux;

                    int aux1 = dados[i];
                    dados[i] = dados[j];
                    dados[j] = aux1;

                    String aux2 = filtros[i];
                    filtros[i] = filtros[j];
                    filtros[j] = aux2;
                }
            }
        }
    }
}
